package com.skiving.cloud.auth.constant;

import java.util.ArrayList;
import java.util.List;

public class AuthConstant {
    public static final String USER_SESSION = "userSession";

    public static final int CODE_SUCCESS = 200;			// 成功状态码
    public static final int CODE_ERROR = 500;			// 错误状态码
    public static final int CODE_WARNING = 501;			// 警告状态码
    public static final int CODE_NOT_JUR = 403;			// 无权限状态码
    public static final int CODE_NOT_LOGIN = 401;		// 未登录状态码
    public static final int CODE_INVALID_REQUEST = 400;	// 无效请求状态码

    /**
     * 通用是否 是
     */
    public static final String COMMON_YES_OR_NO_YES = "1";
    /**
     * 通用是否 否
     */
    public static final String COMMON_YES_OR_NO_NO = "0";

    /**
     * 通用状态 正常
     */
    public static final String COMMON_STATUS_NORMAL = "100101";
    /**
     * 通用状态 停用
     */
    public static final String COMMON_STATUS_DISABLED = "100102";
    /**
     * 通用状态 删除
     */
    public static final String COMMON_STATUS_DELETED = "100103";

    /**
     * 是否免密登录
     * @author hushouquan
     */
    public enum  LoginType {
        PASSWORD("password"), // 密码登录
        NOPASSWD("nopassword"); // 免密登录

        private final String code;// 状态值

        LoginType(String code) {
            this.code = code;
        }
        public String getCode () {
            return code;
        }
    }

    /**
     * 内置三员角色
     */
    public enum BuiltInRole{
        /**
         * 系统管理员 初始化、基础配置
         */
        ADMIN("1"),
        /**
         * 安全保密员 用户权限管理
         */
        SECURITY("2"),
        /**
         * 安全审计员 审计日志
         */
        AUDIT("3");
        private final String value;
        BuiltInRole(String value){
            this.value = value;
        }
        public String getValue() {
            return value;
        }
    }

    /**
     * 内置角色集合
     * @return 角色集合
     */
    public static List<String> getBuiltInRoleArray(){
        return new ArrayList<>(
                List.of(BuiltInRole.ADMIN.getValue(),
                        BuiltInRole.SECURITY.getValue(),
                        BuiltInRole.AUDIT.getValue())
        );
    }
}
